{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "#本章需导入的模块\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "import warnings\n",
    "warnings.filterwarnings(action = 'ignore')\n",
    "%matplotlib inline\n",
    "plt.rcParams['font.sans-serif']=['SimHei']  #解决中文显示乱码问题\n",
    "plt.rcParams['axes.unicode_minus']=False\n",
    "import sklearn.linear_model as LM\n",
    "from sklearn.metrics import classification_report\n",
    "from sklearn.model_selection import cross_validate,train_test_split\n",
    "from sklearn import neighbors,preprocessing"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1.0, '两种核函数')"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "d=np.linspace(-3,3,100)\n",
    "y1=[0.5]*100\n",
    "y2=1/np.sqrt(2*np.pi)*np.exp(-d*d/2)\n",
    "plt.plot(d,y2,label=\"高斯核(I(.)=1)\",linestyle='-.')\n",
    "y1,y2=np.where(d<-1,0,(y1,y2))\n",
    "y1,y2=np.where(d>1,0,(y1,y2))\n",
    "plt.plot(d,y1,label=\"均匀核\",linestyle='-')\n",
    "plt.plot(d,y2,label=\"高斯核\",linestyle='--')\n",
    "plt.legend()\n",
    "plt.title(\"两种核函数\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "说明：绘制均匀核函数和高斯核函数的函数曲线。利用np.where函数实现依条件的分支处理。例如，y1,y2=np.where(x<-1,0,(y1,y2))表示：若x<-1成立输出结果等于0，否则输出y1和y2。这里对np.where的结果进行元组解包依次赋值给y1和y2。"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
